<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * Класс для работы с нативной сессией
 * Переопределяет стандартный одноименный класс
 * 
 * @package CoreFramework
 * @version 1.0
 * @author Gennadiy Kozlenko
 */
class CI_Session {
   
   /**
    * Имя сессии
    *
    * @access private
    * @var string
    */
   var $_name = 'psid';
   
   /**
    * Конструктор класса
    *
    * @access public
    * @return CI_Session
    */
   function CI_Session() {
      $this->session_start();
   } // end CI_Session
   
   /**
    * Старт сессии
    *
    * @access public
    */
   function session_start() {
      session_name($this->_name);
      session_start();
   } // end session_start
   
   /**
    * Уничтожение сессии
    *
    * @access public
    */
   function session_destroy() {
      session_destroy();
   } // end session_destroy
   
   /**
    * Установка имени сессии
    * Внимание! Пересоздает текущую сессию
    *
    * @access public
    * @param string $name
    */
   function set_name($name) {
      $this->_name = $name;
      $this->session_destroy();
      $this->session_start();
   } // end set_name
   
   /**
    * Получение имени сессии
    *
    * @access public
    * @return string
    */
   function get_name() {
      return $this->_name;
   } // end get_name
   
   /**
    * Получение идентификатора сессии
    *
    * @access public
    * @return string
    */
   function get_id() {
      return session_id();
   } // end get_id
   
   /**
    * Установка идентификатора сессии
    *
    * @access public
    * @param string $id
    */
   function set_id($id) {
      session_id($id);
   } // end set_id
   
   /**
    * Перегенирация идентификатора сессии
    *
    * @access public
    */
   function regenerate_id() {
      session_regenerate_id();
   } // end regenerate_id
   
   /**
    * Получение параметра из сессии
    *
    * @access public
    * @param string $name
    * @param mixed $default
    * @return mixed
    */
   function get($name, $default = false) {
      return isset($_SESSION[$name]) ? $_SESSION[$name] : $default;
   } // end get
   
   /**
    * Установка параметра в сессию
    *
    * @access public
    * @param string $name
    * @param mixed $value
    */
   function set($name, $value) {
      $_SESSION[$name] = $value;
   } // end set
   
   /**
    * Удаление параметра из сессии
    *
    * @access public
    * @param string $name
    */
   function clean($name) {
      unset($_SESSION[$name]);
   } // end clean
   
   /**
    * Проверка существования параметра в сессии
    *
    * @access public
    * @param string $name
    * @return boolean
    */
   function exists($name) {
      return isset($_SESSION[$name]);
   } // end exists
   
}
